1. Field of the Invention
The present invention relates to the field of boot read-only memory (ROM) handling and more particularly to the field of boot ROM memory sharing amongst multiple, different input/output (I/O) adapters.
2. Description of the Related Art
Boot ROM refers to the firmware embedded in a computing device that enables the computing device to bootstrap to an operational state. Generally, a boot ROM includes enough logic embedded in the firmware to enable the computing device to retrieve further logic from fixed storage and to execute retrieved logic in memory in order to ultimately arrive at an operational state. While boot ROMs have formed part and parcel of personal computing devices for decades, boot ROMs also have been integral in the networked enterprise in enabling a uniform configuration of different, communicatively coupled I/O devices in a network.
In the network configuration, a boot ROM brings a host I/O device to an initial operational state. Subsequently, the boot ROM can solicit and retrieve subsequent boot instructions from a server device over a computer communications network. In this way, as modifications are performed in the boot instructions, the modifications can be performed centrally thereby obviating the need for updating the boot ROM in each I/O device.
Generally, the logic of the boot ROM can be loaded into a memory address space in random access memory (RAM) prior to execution. In many circumstances, however, such as in the case of the 0×86 processor, the memory address space can be limited to one-hundred and twenty-eight (128) kilobytes (KB) by way of example. Yet, on occasion, it is possible that the memory address space for accommodating the logic of the boot ROM can become overcommitted and can fall short in size of the required space. Consequently, the memory address space in RAM can be “paged”, as it is well-known in the art, in order to swap in and out the required logic when executing the boot ROM.
Memory paging can be computationally expensive and can slow the execution of boot ROM logic. In conventional boot ROM paging algorithms, however, portions of a boot ROM can be paged indiscriminately. Other conventional boot ROM paging algorithms provide for memory paging for multiple different boot ROM images from different I/O adapters in a computer communications network. In the latter circumstance, however, the paging as before can be performed indiscriminately without regard to the optimization of access to selected ones of boot ROM images for different I/O adapters.